package schedule.ui {
	
	import flash.display.DisplayObject;
	import flash.events.MouseEvent;
	import flash.events.EventDispatcher;
	import mx.containers.*;
	import mx.controls.*;
	import mx.managers.PopUpManager;
	
	import schedule.*;
	
	public class GroupInputBox extends EventDispatcher {
		
		public static const GROUP_SELECTED:String = "groupSelected";
		
		private var parent:DisplayObject;
		private var titleWindow:TitleWindow;
		private var input:TextInput;
		private var errorText:Text;

		public function GroupInputBox(parent:DisplayObject)
		{
			this.parent = parent;
		}

		private function createPopup():void {
			var box:VBox = new VBox ();			
			var label:Label = new Label();
			label.text = "Введите номер вашей группы:";

			input = new TextInput();
			
			var button:Button = new Button();
			button.label = "Войти";
			button.addEventListener(MouseEvent.CLICK, onButtonClick);
		
			errorText = new Text();
			errorText.text = "";
			errorText.percentWidth = 100;
			errorText.visible = false;
			
			titleWindow = new TitleWindow();
			titleWindow.title = "Вход в систему";
			titleWindow.showCloseButton = false;
		
			box.addChildAt(label, 0);
			box.addChildAt(input, 1);
			box.addChildAt(button, 2);
			box.addChildAt(errorText, 3);
			box.styleName = "promptVBox";
			box.percentWidth = 100;
			titleWindow.addChild (box);
		
			titleWindow.defaultButton = button;
		}
		
		private function onButtonClick(evt:MouseEvent):void {
			var group:Number = parseInt (input.text, 10);
			if (isNaN (group) || group < 901 || group > 926) {
				errorText.text = "Номер группы должен быть от 901 до 926.";
				errorText.visible = true;
				return;
			}
		
			if (ScheduleLoader.exists (group)) {
				errorText.visible = false;
				dispatchEvent(new GroupSelectedEvent (group, GROUP_SELECTED));
			} else {
				errorText.text = "Увы, но для вашей группы расписание ещё не введено. Вы можете заказать его ввод (или сделать сами) здесь:\n\n http://vkontakte.ru/topic-1668_21818189";
				errorText.visible = true;
			}
		}
		
		public function showPopup(defaultValue:int):void {
			if (titleWindow == null)
				createPopup();
			
			if (defaultValue != 0)
				input.text = defaultValue.toString();
			
			PopUpManager.addPopUp(titleWindow, parent, true);
			PopUpManager.centerPopUp(titleWindow);
			input.setFocus();
		}
		
		public function hidePopup():void {
			PopUpManager.removePopUp(titleWindow);
		}
	}
}